Computers have become highly integrated in the workforce, in the home, and in mobile devices. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
Software applications are typically written using some type of high-level programming language. Although many languages are in use today, most fall into one of two categories: procedural and declarative languages. In procedural languages, the developer typically writes a series of statements, referred to as functions or routines, which are to be computationally carried out in sequence. Procedural languages may include ASP, PERL, Python and C, among others. Such languages generally require a high level detail regarding event handling and state changes. This is more pronounced in cases where the user interface changes as a result of various user inputs.
Declarative languages have alleviated some of this burden by allowing developers to generally specify how to handle certain events or state changes without having to write code for each specific situation. However, declarative languages often lack the dynamism to allow the declarative specification of rich data driven applications.